package com.ics.atable.chat.service;

import com.ics.atable.chat.model.dto.AddressDTO;
import com.ics.atable.chat.model.dto.AddressEmbeddingDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 地址Excel处理服务接口
 */
public interface AddressService {

    /**
     * 处理Excel文件上传，包括验证与解析
     *
     * @param file Excel文件（.xlsx）
     * @return 地址数据列表
     * @throws Exception 处理异常
     */
    List<AddressDTO> processExcelFile(MultipartFile file) throws Exception;

    /**
     * 验证Excel文件格式和大小
     *
     * @param file Excel文件
     * @throws IllegalArgumentException 验证失败异常
     */
    void validateExcelFile(MultipartFile file) throws IllegalArgumentException;

    /**
     * 对地址列表进行向量化并写入向量数据库
     *
     * @param addresses 地址列表
     * @return 向量化后的数据
     */
    List<AddressEmbeddingDTO> embedAndStore(List<AddressDTO> addresses);

    /**
     * 端到端：解析Excel -> 构造字段 -> 向量化 -> 入库
     *
     * @param file Excel文件
     * @return 向量化后的数据
     * @throws Exception 异常
     */
    List<AddressEmbeddingDTO> processExcelAndStore(MultipartFile file) throws Exception;
}


